package com.hrt.iceberg.unauto

import org.apache.spark.sql.SparkSession

/**
  *  SparkSQL 与Iceberg整合
 *   分别使用hivecatalog和hadoopcatalog进行测试
  */
object SparkIceberg1 {

  def main(args: Array[String]): Unit = {
    // 创建Spark Catalog
    val spark: SparkSession = SparkSession.builder().master("local").appName("SparkOperateIceberg")
      //设置Hive Catalog
      .config("spark.sql.catalog.hive_prod", "org.apache.iceberg.spark.SparkCatalog")
      .config("spark.sql.catalog.hive_prod.type", "hive")
      .config("spark.sql.catalog.hive_prod.uri", "thrift://hadoop102:9083")
      .config("iceberg.engine.hive.enabled", "true")

      //设置Hadoop Catalog
      /*.config("spark.sql.catalog.hadoop_prod", "org.apache.iceberg.spark.SparkCatalog")
      .config("spark.sql.catalog.hadoop_prod.type", "hadoop")
      .config("spark.sql.catalog.hadoop_prod.warehouse", "hdfs://hadoop102:8020/sparkoperateceberg")*/
      .getOrCreate()
    /**
      *  Spark使用Hadoop Catalog 管理Hive表
      *
      */
    //创建表
/*    spark.sql(
      """
        | create table if not exists hadoop_prod.iceberg.test(id int,name string,age int) using iceberg
      """.stripMargin)

    //插入数据
    spark.sql(
      """
        | insert into hadoop_prod.iceberg.test values (1,"zs",18),(2,"ls",19),(3,"ww",20)
      """.stripMargin)

    spark.sql(
      """
        | select * from hadoop_prod.iceberg.test
      """.stripMargin).show()*/

    //删除表，hadoop catalog删除表，会将表目录删除，库目录存在。
    /*spark.sql(
      """
        |drop table hadoop_prod.xxx.test
      """.stripMargin)*/


    /**
      *  Spark使用Hive Catalog 管理Hive表
      */

    //创建表
    spark.sql(
      """
        | create table if not exists hive_prod.iceberg.test(id int,name string,age int) using iceberg
      """.stripMargin)

    //插入数据
    spark.sql(
      """
        | insert into hive_prod.iceberg.test values (1,"zs",18),(2,"ls",19),(3,"ww",20)
      """.stripMargin)

    //查询数据
    spark.sql(
      """
        | select  * from hive_prod.iceberg.test
      """.stripMargin).show()

    //删除表 ,删除数据表，数据会被删除，但是表目录还存在。
//    spark.sql(
//      """
//        | drop table hive_prod.iceberg.test
//      """.stripMargin)




  }
}
